import requests
import win32com.client

def 查询学校id(学校名称):
	请求头 = {
		"Accept": "application/json, text/plain, */*",
		"Content-Type": "application/json;charset=UTF-8",
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}

	url = "https://api.eol.cn/gkcx/api/"
	data = {"access_token": "", "keyword": 学校名称, "page": 1, "signsafe": "", "size": 20,
	        "sort": "view_total", "uri": "apidata/api/gk/school/lists"}
	res = requests.get(url, params=data, headers=请求头)
	return res.json()["data"]["item"][0]

def 查询学校详情(_学校id):
	url = "https://static-data.eol.cn/www/2.0/school/" + _学校id + "/info.json"
	res = requests.get(url)
	return res.json()["data"]

def 查询分数(_学校id, _年, 文理="", 省份="61"):
	if 文理 == "":
		文理 = 1
	if 文理.find("文") > -1:
		文理 = 2
	url = "https://static-data.eol.cn/www/2.0/schoolprovinceindex/"
	url += "{年}/{学校id}/{省份}/{文理}/1.json".format(学校id=_学校id, 年=_年, 文理=文理, 省份=省份)
	res = requests.get(url)
	if res.text == '""':
		return []
	return res.json()["data"]["item"][0]

def 招生计划(_学校id, _年, 文理="", 省份="61"):
	if 文理.find("文") > -1:
		文理 = 2
	url = "https://static-data.eol.cn/www/2.0/schoolplanindex/"
	url += "{年}/{学校id}/{省份}/{文理}/8/1.json".format(学校id=_学校id, 年=_年, 文理=文理, 省份=省份)
	res = requests.get(url)
	if res.text == '""':
		return []
	return res.json()["data"]["item"]

def 专业分数线(_学校id, _年, 文理="", 省份="61"):
	if 文理.find("文") > -1:
		文理 = 2
	url = "https://static-data.eol.cn/www/2.0/schoolspecialindex/"
	url += "{年}/{学校id}/{省份}/{文理}/8/1.json".format(学校id=_学校id, 年=_年, 文理=文理, 省份=省份)
	res = requests.get(url)
	if res.text == '""':
		return []
	return res.json()["data"]["item"]

def 添加内容(_Worksheets, _行数, 起始列=1, _主键=None, _内容=None):
	for _i in range(len(_主键)):
		_列数 = _i + 起始列
		_Worksheets.Cells(_行数, _列数).Value = _内容[_主键[_i]]

def 添加标题(_Worksheets, _行数, _标题=None):
	for _i in range(len(_标题)):
		_列数 = _i + 1
		_Worksheets.Cells(_行数, _列数).Value = _标题[_i]

def 是否包含(文本1, 文本2):
	if 文本1.find(文本2) > -1:
		return True
	elif 文本2.find(文本1) > -1:
		return True

def 添加信息():
	Worksheets = xlBook.Sheets.Add()
	Worksheets.name = 大学名

	# 地址, "address"
	标题 = ["大学名", "普通本科", "师范类", "公办", "广西", "地址"]
	主键 = ["name", "level_name", "type_name", "nature_name", "province_name", "address"]
	行数 = 1
	添加标题(Worksheets, 行数, 标题)
	行数 = 行数 + 1
	添加内容(Worksheets, 行数, 1, 主键, 学校信息)

	标题 = ["年份", "录取批次", "招生类型", "最低分", "最低位次", "省控线"]
	主键 = ["year", "local_batch_name", "zslx_name", "min", "min_section", "proscore"]
	行数 = 4
	添加标题(Worksheets, 行数, 标题)

	行数 = 5
	for i in range(几年内):
		年 = str(2020 - i)
		分数信息 = 查询分数(学校id, 年, 分类)
		if 分数信息 == []:
			break
		添加内容(Worksheets, 行数, 1, 主键, 分数信息)
		行数 += 1

	行数 = 几年内 + 行数
	招生标题 = ["年份", "最低分", "最低位次", "平均分", "专业名称", "计划招生", "专业名称", "学科门类", "学科门类", "学科门类", "学制"]
	招生主键 = ["num", "spname", "level1_name", "level2_name", "level3_name", "length"]
	添加标题(Worksheets, 行数, 招生标题)
	分数线主键 = ["year", "min", "min_section", "average", "spname"]

	for i in range(几年内):
		行数 = 行数 + 1
		年 = str(2020 - i)
		招生信息组 = 招生计划(学校id, 年, 分类)
		专业分数线组 = 专业分数线(学校id, 年, 分类)

		for 招生信息 in 招生信息组:
			if 招生信息["spname"].find("办学地") > -1:
				招生信息["spname"] = 招生信息["spname"][:招生信息["spname"].find("办学地") - 1]

			添加内容(Worksheets, 行数, len(分数线主键) + 1, 招生主键, 招生信息)

			for 分数线信息 in 专业分数线组:
				分数线信息["year"] = 年
				if 分数线信息["spname"].find("教学地") > -1:
					分数线信息["spname"] = 分数线信息["spname"][:分数线信息["spname"].find("教学地") - 1]
				if 是否包含(招生信息["spname"], 分数线信息["spname"]):
					添加内容(Worksheets, 行数, 1, 分数线主键, 分数线信息)
					break

			行数 = 行数 + 1

	Worksheets.Cells.EntireColumn.AutoFit()
	Worksheets.Cells.HorizontalAlignment = -4131  # 水平居中xlCenter

if __name__ == '__main__':
	分类 = "文"
	几年内 = 4
	filename = "H:\编程项目\python\数据.xlsx"
	xlApp = win32com.client.Dispatch('Excel.Application')
	xlBook = xlApp.Workbooks.Open(filename)
	xlApp.Visible = True
	# 学校组 = ["广西科技师范", "山东农业", "海南热带海洋", "合肥师范", "马鞍山学院", "嘉兴南湖学院", "赣东学院", "山东工商", "武夷学院",
	#        "闽江学院", "赣南科技学院", "浙江万里学院"]
	学校组 = ["西安文理", "宝鸡文理", "商洛学院", "西安电子", "西安科技", "西北政法", "西安财经", "延安大学", "青海民族"]
	for 学校名 in 学校组:
		学校信息 = 查询学校id(学校名)
		大学名 = 学校信息["name"]
		学校id = 学校信息["school_id"]
		添加信息()
    xlBook.Save()
    xlBook.Close(SaveChanges=0)
    del xlApp

        
